package s2elinshu;

import java.util.Scanner;

public class J14Ex46CalendarV2 {

	public static void main(String[] args) {
		// 서기 1년 1월 1일은 [월]요일임
		// 그러면,1년 12월 31일의 요일은?(평년)
		// 31,28,31,30,31,30,31,31,30,31,30,31
		// 하지만 1년이 366일인 경우도 있음(윤년)
		// 31,29,31,30,31,30,31,31,30,31,30,31

		// 윤년 : 4년 나누어지고, 100으로 나누어 떨어지지 않고, 400으로 나눠 떨어지는 해

		// 0 = 일요일~6 = 토요일
		// 위 내용을 토대로 1년 12월 31일의 요일은?
		int myday;
		int allday = 365;
		int leapyear = 0;
		int cyear = 2014;
		String day;

		// 윤년 횟수 계산
		if (cyear % 4 == 0 && cyear % 100 != 0 || cyear % 400 == 0) {
			++leapyear;
		}

		// 총 일수를 계산한 후 7로 나누어 나머지 계산
		myday = ((cyear*allday)+leapyear)%7;
		
		switch(myday){
		case 0:
			day = "일";
			break;
		case 1:
			day = "월";
			break;
		case 2:
			day = "화";
			break;
		case 3:
			day = "수";
			break;
		case 4:
			day = "목";
			break;
		case 5:
			day = "금";
			break;
		default :
			day = "토";
		}
		
		System.out.println("서기 1년 12월 31일은 "+day+"요일입니다.");

	
	//2014년 12월 31일의 요일은?
		cyear = 2014;
		leapyear = 0;
		
		for(int i = 1; i<=cyear ; ++i){
		if(i %4 ==0 && i %100 != 0 || i %400==0){
			++leapyear;
		}
		}  // 윤년계산
		
		myday = ((cyear*allday)+leapyear)%7;
		switch(myday+1){
		case 0:
			day = "일";
			break;
		case 1:
			day = "월";
			break;
		case 2:
			day = "화";
			break;
		case 3:
			day = "수";
			break;
		case 4:
			day = "목";
			break;
		case 5:
			day = "금";
			break;
		default :
			day = "토";
		}
		
		System.out.println("서기 2014년 12월 31일은 "+day+"요일입니다.");
		
		//달력출력
		
		String result = "\n\t\t\t"+(cyear+1);
		result +="년 1월\n";
		result +="\t------------------------------\n";
		result +="\t일\t월\t화\t수\t목\t금\t토\n";
		
		//줄바꿈 처리를 위한 변수
		int lineCount = 0;
		
		
		//공백처리
	    if(myday>0){
	    	for(int j=0;j<=myday;++j){
	    		result +="\t";
	    		++lineCount;
	    	}
	    }
		
		//날짜 출력
	    for(int k=1; k<=31;++k){
	    	result +="\t"+k;
    		++lineCount;
    		if(lineCount%7 == 0)
    			result += "\n";
	    }
	    
	    
		System.out.print(result);
		
		
		
		
	
	} // main
} // J14Ex46CalendarV2
